Conditional termination of loops over heap-allocated data
نویسندگان
چکیده
Static analysis which takes into account the values of data stored in the heapis considered complex and computationally intractable in practice. Thus, moststatic analyzers do not keep track of object fields nor of array contents, i.e.,they are heap-insensitive. In this article, we propose locality conditions forsoundly tracking heap-allocated data in Java (bytecode) programs, by meansof ghost non-heap allocated variables. This way, heap-insensitive analysis overthe transformed program can infer information on the original heap-allocateddata without sacrificing efficiency. If the locality conditions cannot be provenunconditionally, we seek to generate aliasing preconditions which, when theyhold in the initial state, guarantee the termination of the program. Experimen-tal results show that we greatly improve the accuracy w.r.t. a heap-insensitiveanalysis while the overhead introduced is reasonable.
منابع مشابه
From Shape Analysis to Termination Analysis in Linear Time
We present a novel algorithm to conservatively check whether a (recursive) heap-manipulating program terminates. Our algorithm can be used as a post-processing phase of any shape analysis satisfying some natural properties. The running time of the post-processing phase is linear in the size of the output of the chosen shape analysis. The main idea is to partition the (unbounded but finite) set ...
متن کاملTermination Analysis of Java Bytecode
Introduction: The state of the art in termination analysis includes advanced techniques developed for logic and functional programming [12, 4, 9, 11, 10] and imperative languages [2, 5, 8, 6, 10], as well as for term rewriting systems [10]. In [6, 5] tools for proving termination of large industrial code are presented. However, termination of low-level languages, such as Java bytecode, has rece...
متن کاملProving Termination Through Conditional Termination
We present a constraint-based method for proving conditional termination of integer programs. Building on this, we construct a framework to prove (unconditional) program termination using a powerful mechanism to combine conditional termination proofs. Our key insight is that a conditional termination proof shows termination for a subset of program execution states which do not need to be consid...
متن کاملDealing with Numeric Fields in Termination Analysis of Java-like Languages
Termination analysis tools strive to find proofs of termination for as wide a class of (terminating) programs as possible. Though several tools exist which are able to prove termination of non-trivial programs, when one tries to apply them to realistic programs, there are still a number of open problems. In the case of Java-like languages, one of such problems is to find a practical solution to...
متن کاملField-Sensitive Value Analysis by Field-Insensitive Analysis
Shared and mutable data-structures pose major problems in static analysis and most analyzers are unable to keep track of the values of numeric variables stored in the heap. In this paper, we first identify sufficient conditions under which heap allocated numeric variables in object oriented programs (i.e., numeric fields) can be handled as nonheap allocated variables. Then, we present a static ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید
ثبت ناماگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید
ورودعنوان ژورنال:
- Sci. Comput. Program.
دوره 92 شماره
صفحات -
تاریخ انتشار 2014